/**
 * 将TypeScript/JavaScript对象字符串转换为JSON对象
 * 处理包含变量声明、类型注解的对象字面量
 */
export const parseConfigString = (configString: string): Record<string, any> => {
  try {
    // 1. 移除变量声明和类型注解（如: Config）
    let cleaned = configString
      .replace(/^const\s+\w+:\s*\w+\s*=/, '') // 移除 "const xxx: Config ="
      .replace(/;/g, '') // 移除结尾分号
      .trim()

    // 2. 处理单引号为双引号（JSON要求双引号）
    cleaned = cleaned.replace(/'/g, '"')

    // 3. 处理尾部可能的逗号（JSON不允许尾逗号）
    cleaned = cleaned.replace(/,\s*([\]}])/g, ' $1')

    // 4. 解析为JSON对象
    return JSON.parse(cleaned)
  } catch (error) {
    console.error('解析配置字符串失败:', error)
    throw new Error(`配置格式错误: ${(error as Error).message}`)
  }
}

// 使用示例
const configString = `const defaultConfig: Config = {
  baseUrl: 'https://console-crm-api-dev.ntplat.com/crm',
  websocket: 'wss://console-crm-api-dev.ntplat.com',
  SSOUrl: 'https://sso-dev.taiyouxi.cn/login',
  SSOLogoutUrl: 'https://sso-api-dev.taiyouxi.cn/server/oauth',
  ClientId: 'crm'
}`

// 转换为JSON对象
const configObject = parseConfigString(configString)
console.log(configObject.baseUrl) // 输出: https://console-crm-api-dev.ntplat.com/crm
